#include <iostream>
#include <vector>
using namespace std;

/* 以空间换时间
输入一个长度为n的整数序列。
接下来再输入m个询问，每个询问输入一对L，R。对于每个询问，输出原序列中从第L个数到第R个数的和。
【输入格式】
 第一行包含两个整数n和m。
 第二行包含n个整数，表示整数数列。
 接下来m行，每行包含两个整数L和R，表示一个询问的区间范围。
【输出格式】  共m行，每行输出一个询问的结果。
【数据范围】  1<L<R<n，1<n,m<100000,一1000<数列中元素的值<1000
*/
// 前缀和
int main()
{
    int n, m;
    cin >> n >> m;
    vector<int> arr(n);
    // 边输入边求解前缀和，并存在一个容器当中
    vector<int> pre(n + 1, 0);
    for (int i = 1; i <= n; i++)
    {
        cin >> arr[i];
        pre[i] = pre[i-1] + arr[i];
    }
    // 保存要输出的结果
    vector<int> result;
    while (m--)
    {
        int l, r;
        cin >> l >> r;
        int sum; // 保存结果
        sum = pre[r] - pre[l - 1];
        result.push_back(sum);
    }
    // 打印输出
    for (const auto &num : result)
    {
        cout << num << endl;
    }
    return 0;
}